package com.facade.obra;

import java.io.Serializable;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.comun.filtro.FiltroLista;
import com.modelo.dao.obra.IObraDAO;
import com.modelo.entity.Obra;
import com.modelo.entity.ObraDocumento;

/**
 * Clase Servicio encargada de realizar las distintas operaciones con obras.
 * 
 * @author David
 * 
 */
@Service
public class GestionObra implements IGestionObra, Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	@Autowired
	private IObraDAO obraDAO;

	@Override
	public void actualizar(Obra obra) {
		obraDAO.update(obra);
	}

	@Override
	public Obra attachDocumentos(Obra obra) {
		return obraDAO.attachDocumentos(obra);
	}

	@Override
	public void crear(Obra obra) {
		obraDAO.save(obra);
	}

	@Transactional
	@Override
	public void delete(List<Obra> obrasEliminar) {
		for (Iterator<Obra> it = obrasEliminar.iterator(); it.hasNext();) {
			Obra obra = it.next();
			obraDAO.delete(obra);
		}
	}

	@Override
	public Set<ObraDocumento> getObraDocumentosUpdated(List<Integer> listaDoc, Obra obra) {
		Set<ObraDocumento> setOD = new HashSet<ObraDocumento>();
		obra = attachDocumentos(obra);

		for (Iterator<ObraDocumento> it = obra.getObraDocumentos().iterator(); it.hasNext();) {
			// ObraDocumento obraDoc = it.next();

		}

		return setOD;

	}

	@Override
	public List<Obra> getObrasActivas(FiltroLista filtro) {
		return obraDAO.getObrasActivas(filtro);
	}

	@Override
	public int getTotal() {
		return obraDAO.getTotal();
	}

	/**
	 * @param obraDAO
	 *            the obraDAO to set
	 */
	public void setObraDAO(IObraDAO obraDAO) {
		this.obraDAO = obraDAO;
	}
}
